Conditional Generative Adversarial Nets论文解读

abstract

  • 本文在之前GAN论文中的future work中其中已经提到了,主要是给定条件y,结合随机分布,可以生成符合条件y的样本。
  • 论文中基于CGAN,基于mnist,提出了一个可以基于给定label生成特定数字的模型;同时CGAN可以用于multi-model model的学习,论文中给出了一个示例,模型可以给出训练标签中没有出现过的标签。

introduction

  • 在之前的unconditional GAN中,生成的数据是不可控的,对于mnist来说,生成的只能保证是0~9的数字,没法确定是什么数字,给定条件的话,则可以基于给定的class label,生成特定的数字图像,此外也有可能控制数字的风格等。
  • 之前的监督学习中,主要有2个挑战
    • 输出的类别数量太多,模型难以改进。
    • 之前的模型大多是生成一个1V1 mapping,即one input,one output,但是许多情况都是one-to-many mapping的情况。比如说image tag的问题,一张图像可能不止一个tag,传统的模型无法解决这样的问题。
  • 为了解决上面2个问题,可以
    • 针对第一个问题,可以借助其他的辅助信息,比如说获取语料库中labels之间的关系等,之前也有过验证,简单的从image feature-space到word-representation-space的显性映射都可以大大提升分类性能。
    • 针对第二个问题,可以使用条件概率生成模型,将输入图像视为conditional variable,使用条件预测分布去获取one-to-many mapping

Conditional Adversarial Nets

Generative Adversarial Nets

  • GAN在上一篇博客中已经有所介绍,这里就不详细说了。

Conditional Adversarial Nets

  • CGAN流程图如下:

20181109-CGAN-流程图.png

与之前GAN的目标函数稍有不同,CGAN的目标函数如下,主要就是引入了条件y。

$$\mathop {\min }\limits_G {\kern 3pt} \mathop {\max }\limits_D {\kern 3pt} V(D,G) = E_{x \sim p_{data}(x) }[logD(x|y)] + {E_{z \sim {p_x}(z)}\;}[log(1 - D(G(z|y)))]$$

Experimental Results

Unimodal

  • 将class label作为条件,结合单峰函数作为输入,在mnist中,class label是one-hot向量,单峰函数是1X100正态分布向量。关于hidden layer等具体信息可以看论文,最后得到的结果如下

20181109-CGAN-mnist.png

Multimodal

  • 做了image tags的生成实验,生成的多峰的分布(一张image的tag一般不止一个)

Future Work

  • 本文中的CGAN还是比较初级的,之后会尝试一些更加复杂的模型。
  • CGAN在语言模型的学习中也可以发挥其作用。